drnma.class <- function(){
for(i in 1:ns){ # loop through ns trials
w[i,1] <-0
delta[i,1] <- 0
u[i] ~ dnorm(0,0.001) # baseline effect
for (k in 1:na[i]){ # loop through na arms within a study
r[i,k] ~ dbin(p[i,k], n[i,k])
logit(p[i,k]) <- theta[i,k]
theta[i,k] <- u[i] + delta[i,k]
# arm deviance
rhat[i,k] <- p[i,k] * n[i,k] # the expected number of events
resdev[i,k] <- 2 * (r[i,k] * (log(r[i,k]) - log(rhat[i,k])) + (n[i,k] - r[i,k]) * (log(n[i,k] - r[i,k]) - log(n[i,k] - rhat[i,k]))) # the resuidual deviance
}
# study devinace
resstudydev[i] <- sum(resdev[i, 1:na[i]])
for(k in 2:na[i]){ # treatment effects: delta's
# RE delta's
delta[i,k]~dnorm(md[i,k], prec[i,k])
# dose-effect model
DE[i,k] <- ((beta1[class[i,k]] * dose1[i,k]) + (beta2[class[i,k]] * dose2[i,k])) - ((beta1[class[i,1]] * dose1[i,1]) + (beta2[class[i,1]] * dose2[i,1]))
# multi-arm correction
md[i,k] <- DE[i,k] + sw[i,k] # modify the mean
prec[i,k] <- prec.d *2*(k-1)/k # modify the precision
w[i,k] <- delta[i,k] - DE[i,k]
sw[i,k] <-sum(w[i,1:(k-1)])/(k-1)
}
}
#** PRIORS
# 1. to delta's RE model
tau.d~dunif(0,5) # common standard deviation is given a vague prio
prec.d<-pow(tau.d,-2) # common precision in RE-NMA model
# 2. to beta's (DR coeff)
beta1[refclass.index] <- 0
beta2[refclass.index] <- 0
for (c in c(1:(refclass.index-1),(refclass.index+1):nc)){
beta1[c]~dnorm(0,0.001)
beta2[c]~dnorm(0,0.001)
}
tau.beta~dunif(0,5) # vague prior to beta's SE
prec.beta<-pow(tau.beta,-2) # precision of beta's
# overall deviance
totresdev <- sum(resstudydev[])
#** drug absoulte effect
# the baseline effect
for (m in 1:ns){
rr[m,1] ~ dbinom(p0[m],nn[m,1])
logit(p0[m]) <- OO[m]
OO[m] ~ dnorm(Z, prec.z)
}
# baseline priors
Z ~ dnorm(0, 0.001)
prec.z <- pow(sigma.z,-2)
sigma.z ~ dunif(0,10)
p.placebo <- exp(Z)/(1+exp(Z))
# combine baseline with OR -> drug absolute effect
for (c in c(1:(refclass.index-1),(refclass.index+1):nc)){
for( j in 1:nd.new){
OR[j,c] <- exp(beta1[c]*new.dose[c,j]+ beta2[c]*f.new.dose[c,j])
odds.drug[j,c] <- OR[j,c]*exp(Z)
p.drug[j,c] <- odds.drug[j,c]/(1+odds.drug[j,c])
}
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.